import socket
import os
import sys
import struct


def socket_client():
	try:
		s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
		# 修改 ip
		s.connect(("192.168.111.52", 5555))  # 此处 ip 必须为服务端的 ip
	except socket.error as msg:
		print("报错信息：", msg)
		sys.exit(1)
	while True:
		filepath = "../test.xlsx"  # 传输文件的路径
		if os.path.isfile(filepath):
			# 定义文件信息。128s表示文件名为128bytes长，l表示一个int或long文件类型，在此为文件大小
			# 压缩了两部分内容，第一部分是128字节的文件名称，第二部分是文件本身
			fhead = struct.pack("128sq", bytes(os.path.basename(filepath).encode("utf-8")), os.stat(filepath).st_size)
			s.send(fhead)
			print(f'客户端文件路径： {filepath}')
			with open(filepath, "rb") as f:
				while True:
					data = f.read(1024)
					if not data:
						print(f'{filepath} 文件发送完毕...')
						break
					s.send(data)
		s.close()
		break


if __name__ == '__main__':
	socket_client()
